// 解析出hits里面每项记录，转换成action&time&content
let logRsp = null;

/**************************************
 * 
 * 拆解日志数据
 * 
 **************************************/
// 获取hits 数组
function getLogHits(logRsp) {
    return logRsp.result.rawResponse.hits.hits;
}

function _getFilterData(hits, cb) {
    return hits.filter(hit=> {
        cb.call(this, hit);
    });
}

// 筛选跟房间相关的hits
function getRoomHits(logHits) {
    return _getFilterData(logHits, (hit)=> {
        return [
            'zm.lg', 
            'zm.al', 
            'zm.rm.scb', 
            /*'zm.hb.st', */ 
            'zm.lrh.sm', 
            'zm.lrh.hp', 
            'zm.lrh.lgi'
        ].includes(hit._source.action);
    });
}

// 拿房间状态的数据
function getRoomStateHits(roomHits) {
    return _getFilterData(roomHits, (hit)=> {
        return [
            'zm.al', 
            'zm.rm.scb'
        ].includes(hit._source.action);
    });
}
/******************************************
 * 
 * 分析
 * 
 ******************************************/

// 分解基础信息
function analyzeRoomBaseInfo() {
    
}

// 房间状态的时间线索 返回 Array<{ client_time: Date, server_time: Date, content }>
function analyzeRoomState(roomStateHits) {
    const sampleHits = roomStateHits.map(hit=> {
        return { client_time, server_time, content } = hit._source;
    });
    // TODO 规则，rule1、2、3、4、5判定房间问题
    // TODO 生成可是数据格式
}